{{tag>oracle postgresql sgbd}}

----

====== ORA2PG ======

ORA2PG est un outil facilitant la migration des bases de données Oracle vers Postgresql.

L'outil permet de migrer l'ensemble des éléments d'une base Oracle, et les dernières versions peuvent même transformer une partie du code PL/SQL en PLPGSQL.

Le contributeur principal est [[http://www.darold.net/|Gilles Darold]], et on peut noter qu'une des références ayant fait un usage d'ora2pg est [[http://www.bull.com/bulldirect/N9/expert.html|le groupe Bull]].

Bien que présent dans les dépôts Multiverse d'ubuntu, il n'est pas installable. Ceci fait d'ailleurs l'objet d'un [[https://bugs.launchpad.net/ubuntu/+source/ora2pg/+bug/316437|rapport de bug]] sur launchpad.
En effet, il dépend du module perl libdbd-oracle-perl dépendant du package oracle-instantclient-basic (la couche de connexion propriétaire) qui n'est pas disponible dans les dépôts car délivré exclusivement par Oracle.
On peut cependant assez simplement installer ces packages sans avoir à passer par une étape de compilation.

===== Pré-requis =====

  * Disposer des [[:sudo|droits d'administration]].
  * Disposer d'une connexion à Internet configurée et activée.
  * Avoir activé l'accès aux [[:depots#universe_et_multiverse|dépôts Universe et Multiverse]].
  * Avoir [[:tutoriel:comment_installer_un_paquet|installé le paquet]] **[[apt://alien|alien]]**.


===== Installation =====

Tout d'abord, il nous faut récupérer le package rpm oracle-instantclient-basic-10.2.0.3-1.i386.rpm sur le site d'oracle à [[http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html|cette adresse]]

Ensuite, transformer à l'aide de l'utilitaire alien ce package .rpm en .deb :

  sudo alien oracle-instantclient-basic-10.2.0.3-1.i386.rpm

Puis installer le .deb :

  sudo dpkg -i oracle-instantclient-basic_10.2.0.3-2_i386.deb

On peut maintenant installer le package libdbd-oracle-perl qui n'est pas présent dans les dépôts ubuntu. On le trouve chez debian à l'adresse http://ftp.debian.org/debian/pool/contrib/libd/libdbd-oracle-perl/

Ensuite l'installer :

  sudo dpkg -i libdbd-oracle-perl_1.21-2_i386.deb


Et enfin, on peut installer [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt://ora2pg|ora2pg]]**


NB : la version de ora2pg disponible dans les dépôts est 4.9-1. Vous trouverez une version plus récente sur le [[http://pgfoundry.org/projects/ora2pg/|site officiel]] du logiciel.

===== Utilisation =====

Il suffit d'éditer un fichier de conf sur le modèle fourni par le logiciel (ora2pg.conf) et lancer ora2pg avec ce fichier de conf en paramètre :

  ora2pg ora2pg.conf

On obtient en retour un fichier output.sql compatible avec Postgresql.

Principales options du fichier :

  ORACLE_HOME	/usr/local/oracle/10.2.0.3 #chemin d'installation d'oracle-instantclient-basic
  ORACLE_DSN	dbi:Oracle:host=localhost;sid=xe # chaine de connexion Oracle
  ORACLE_USER	system
  ORACLE_PWD	manager
  SCHEMA	SCOTT # schéma Oracle cible, en majuscules
  TYPE		TABLE SEQUENCE DATA PACKAGE FUNCTION PROCEDURE TRIGGER # types d'objets à extraire séparés par des espaces
  OUTPUT	SCOTT_all.sql # fichier sql de sortie, mettre SCOTT_all.sql.bz2 pour l'obtenir compressé
  FKEY_DEFERRABLE	1 # permet de créer les enregistrements sans que les Foreign Key bloquent le chargement
  DEFER_FKEY	1 # permet de créer les enregistrements sans que les Foreign Key bloquent le chargement
  PLSQL_PGSQL	1 # Pour transformer le code PL/SQL en PLPGSQL



===== Limitations =====

Bientôt ...

//Contributeurs principaux : [[utilisateurs:kwakosaure|kwakosaure]].//

